/*******************************************************************************
* Copyright (c) 2006, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.dom.parser.upc;

public class UPCExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCExpressionParsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3,1,
            1,4,4,3,3,2,2,4,1,0,
            1,1,2,2,2,2,2,2,2,2,
            2,4,1,4,1,3,3,3,1,3,
            3,1,3,3,1,3,3,3,3,1,
            3,3,1,3,1,3,1,3,1,3,
            1,3,1,5,1,3,3,3,3,3,
            3,3,3,3,3,3,1,1,2,1,
            0,1,3,1,1,1,1,1,1,1,
            1,3,4,3,2,4,1,2,1,1,
            1,2,5,7,5,1,0,7,2,5,
            9,8,3,2,2,2,3,2,4,2,
            2,2,2,2,1,1,1,1,2,1,
            2,2,2,1,2,2,1,2,2,1,
            2,2,1,2,2,1,3,1,3,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            6,8,0,0,1,1,3,3,3,0,
            1,0,1,2,4,2,1,1,1,3,
            1,1,2,3,7,8,0,1,0,1,
            3,1,3,1,1,1,1,1,1,3,
            1,1,1,1,1,3,1,2,2,1,
            5,3,1,3,5,1,3,1,3,2,
            4,3,5,4,6,6,3,5,1,3,
            4,5,6,0,1,2,1,3,1,1,
            3,2,1,1,1,1,2,1,2,3,
            1,1,1,3,1,2,2,2,3,4,
            5,1,1,7,3,0,0,1,1,3,
            3,4,1,1,2,3,2,3,2,1,
            0,1,2,1,1,1,1,1,2,1,
            3,6,4,2,4,1,1,1,1,1,
            2,4,2,4,2,4,1,1,2,1,
            1,1,3,3,2,1,3,2,3,2,
            3,2,2,11,10,10,9,10,9,9,
            8,10,9,9,8,9,8,8,7,10,
            9,9,8,9,8,8,7,1,1,-43,
            0,0,0,0,0,0,0,0,0,-2,
            0,0,0,0,0,0,0,0,0,0,
            -132,0,0,0,0,0,-81,0,0,0,
            0,0,0,0,0,0,0,0,-62,0,
            0,0,0,0,0,0,0,0,-40,0,
            0,0,0,0,0,0,0,-175,0,-153,
            0,-120,0,0,0,0,-88,0,-90,0,
            -4,0,-17,0,0,0,0,0,0,0,
            -157,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-224,-44,0,0,0,0,0,0,0,
            0,0,0,-207,0,-19,-193,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-148,0,-1,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-82,-20,0,-145,0,0,0,0,
            0,0,0,0,-115,-116,-85,0,0,0,
            0,-21,0,0,0,0,-117,0,0,0,
            0,0,0,0,0,0,-5,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-22,0,-141,
            0,0,0,0,0,0,0,0,-208,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -49,0,0,0,0,0,0,0,0,0,
            0,0,0,-83,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-80,0,-45,0,0,0,
            0,0,0,0,0,0,-3,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-124,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-131,0,
            0,0,0,0,0,0,0,0,-199,0,
            0,0,0,0,0,0,0,0,-133,0,
            0,-9,0,0,0,0,0,0,0,-23,
            0,0,0,0,0,-125,-144,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-30,
            0,0,0,0,0,0,0,0,0,-41,
            0,0,0,0,0,0,0,0,0,0,
            -63,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-64,0,0,0,0,0,0,0,0,
            0,-74,0,0,0,0,0,0,0,0,
            0,0,-65,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-66,0,0,0,0,0,0,
            0,0,0,-75,0,0,0,0,0,0,
            0,0,0,0,-67,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-68,0,0,0,0,
            0,0,0,0,0,-76,0,0,0,0,
            0,0,0,0,0,0,-69,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-70,0,0,
            0,0,0,0,0,0,0,-77,0,0,
            0,0,0,0,0,0,0,0,-71,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-72,
            0,0,0,0,0,0,0,0,0,-78,
            0,0,0,0,0,0,0,0,0,0,
            -73,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-137,0,0,0,0,0,0,0,0,
            0,-79,0,0,0,0,0,0,0,0,
            0,0,-160,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-161,0,0,0,0,0,0,
            0,0,0,-24,0,0,0,0,0,0,
            0,0,0,0,-196,0,0,0,0,0,
            0,0,0,0,-226,0,0,0,0,0,
            0,0,0,0,-205,0,0,0,0,0,
            0,0,0,0,-25,0,0,0,0,0,
            0,0,0,0,0,-6,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -134,0,-211,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-217,0,0,0,0,0,0,0,
            0,0,-26,0,0,0,0,0,0,0,
            0,0,-10,0,0,0,0,0,0,0,
            0,-11,0,0,0,0,0,0,0,-27,
            -225,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -61,0,0,0,0,0,0,0,0,0,
            -28,0,0,0,0,0,0,0,-97,0,
            -12,0,0,0,0,0,0,0,0,-50,
            0,0,0,0,0,0,0,0,0,-95,
            0,0,0,0,0,-174,-118,-86,-147,-29,
            -36,0,-98,0,0,0,0,-99,0,-59,
            0,0,0,0,0,0,0,0,0,-100,
            0,0,0,0,0,0,0,0,0,-212,
            0,0,0,0,0,-164,0,0,0,0,
            0,0,0,0,-92,0,-101,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -128,-119,-135,0,0,-13,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-202,0,0,0,0,0,0,-183,
            -37,0,0,0,0,0,0,-58,0,0,
            0,0,0,0,0,0,0,-139,0,0,
            0,0,0,0,-102,-206,0,0,0,0,
            -103,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-89,-146,0,0,
            0,0,-55,0,0,0,0,0,0,0,
            0,0,-104,0,0,0,-136,0,0,0,
            0,0,0,0,-197,0,0,-195,0,-158,
            -105,0,0,0,0,0,-56,0,0,0,
            0,0,0,0,0,0,0,0,0,-57,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-51,0,0,0,0,0,0,0,
            0,0,-87,0,-52,0,0,0,0,0,
            0,0,0,0,-186,0,-14,0,0,0,
            0,0,0,0,0,0,0,0,0,-127,
            0,0,0,0,0,0,0,0,0,0,
            0,-53,0,0,0,0,0,0,0,0,
            0,0,-93,-91,-210,0,0,-106,0,0,
            -54,0,0,0,0,0,0,0,0,0,
            -219,-130,-169,-182,-154,-84,0,0,0,0,
            0,0,-94,0,0,0,0,-189,0,0,
            0,0,0,0,0,-107,0,-7,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-96,0,0,0,
            0,0,-143,0,0,0,0,0,-152,0,
            0,0,0,0,0,0,0,-42,-156,0,
            0,0,0,-151,0,-108,-165,0,0,0,
            0,0,0,0,0,-163,0,0,0,0,
            0,0,0,-109,-110,0,0,-46,0,0,
            0,0,0,0,0,0,-111,0,-47,0,
            0,0,0,0,0,0,0,0,0,0,
            -48,0,0,0,0,0,0,0,0,-129,
            -168,-187,-159,-162,-39,-138,-181,-173,0,0,
            0,0,0,-112,0,-113,0,-8,0,0,
            0,0,0,0,-114,0,0,0,0,0,
            -121,-123,0,0,0,0,0,-15,0,0,
            0,0,0,0,-16,0,0,0,0,0,
            0,0,-18,0,0,0,-140,0,-60,0,
            0,0,0,-31,0,-185,0,-38,0,-149,
            -167,0,-172,0,-32,-166,-220,0,0,0,
            0,-155,0,0,0,0,0,-33,-170,0,
            0,0,0,0,0,0,0,0,-34,0,
            0,0,0,-122,0,0,0,0,0,-35,
            0,0,-200,-190,0,0,-203,-171,0,0,
            0,0,0,-126,0,0,0,0,-176,0,
            0,0,0,0,0,-142,0,0,0,0,
            0,-184,0,-192,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-178,-201,-179,-150,-216,0,-188,0,
            0,-204,0,0,-180,0,-213,-177,0,-191,
            -215,-221,0,-209,0,-214,0,0,-198,0,
            0,-194,0,-222,0,0,0,0,0,0,
            0,0,0,0,-218,0,0,0,-223,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    @Override
	public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    @Override
	public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            89,10,105,22,22,21,21,46,46,72,
            72,1,1,2,2,2,2,3,3,3,
            4,5,5,5,5,5,5,5,5,62,
            62,73,6,6,6,6,6,6,6,6,
            6,6,6,7,7,8,8,8,8,9,
            9,9,11,11,11,12,12,12,12,12,
            13,13,13,14,14,15,15,16,16,17,
            17,18,18,19,19,20,20,20,20,20,
            20,20,20,20,20,20,20,106,31,28,
            90,90,74,74,48,107,107,107,107,107,
            107,107,108,108,108,109,109,114,114,115,
            115,110,110,111,111,111,117,117,112,112,
            112,112,112,113,113,113,113,113,116,116,
            27,27,27,27,27,35,35,35,80,80,
            75,75,75,75,76,76,76,77,77,77,
            78,78,78,79,79,79,118,118,119,119,
            120,36,38,38,38,38,38,56,57,57,
            57,57,57,57,57,57,57,57,57,57,
            66,63,63,91,92,68,68,64,64,64,
            69,81,81,82,82,70,70,70,33,93,
            93,83,84,84,84,65,65,94,85,85,
            86,86,71,71,23,24,24,24,37,53,
            53,39,39,39,39,42,42,44,40,40,
            41,45,45,121,121,43,122,122,95,95,
            29,29,29,29,29,29,29,29,29,87,
            54,54,54,54,30,59,59,58,58,58,
            60,60,55,55,96,96,47,47,61,61,
            61,49,49,49,50,51,51,51,52,52,
            52,52,67,67,32,32,34,98,97,97,
            97,97,88,99,100,100,101,101,102,102,
            123,123,124,124,125,125,125,125,127,127,
            126,126,126,128,129,129,89,89,2,2,
            2,6,6,6,6,6,6,23,23,25,
            25,26,26,103,103,103,107,130,130,130,
            130,130,130,130,112,112,112,112,112,112,
            112,112,112,112,112,112,112,112,112,112,
            112,112,112,112,112,112,112,112,131,131,
            1,1263,17,21,18,443,1260,45,524,486,
            295,578,542,1064,730,1163,1105,1221,1190,75,
            92,76,430,136,214,327,328,525,20,17,
            21,18,443,43,44,138,135,137,161,618,
            20,17,21,18,443,43,45,524,486,838,
            578,542,1064,730,1163,1695,140,167,551,28,
            123,1701,6,144,147,150,153,277,439,39,
            397,40,1676,65,441,1473,1397,1524,1553,1587,
            1229,556,20,17,21,18,443,1260,45,524,
            486,428,578,542,1064,730,1163,1105,1221,1190,
            75,282,232,618,20,17,21,18,443,43,
            45,1268,1747,283,132,1701,66,347,20,17,
            21,18,443,1260,45,524,486,428,578,542,
            1064,730,1163,1105,1221,1190,75,282,225,180,
            492,219,1617,222,1746,224,225,230,288,283,
            657,1701,1759,32,59,1875,830,1862,1425,294,
            391,136,214,327,328,133,768,151,88,289,
            329,316,64,138,135,137,161,799,1256,256,
            214,327,328,1702,290,200,201,649,20,17,
            21,18,443,325,140,167,276,28,28,1701,
            1701,144,147,150,153,291,439,1774,142,28,
            32,1701,284,1473,1397,1524,1553,1587,1229,587,
            20,17,21,18,443,1260,45,524,486,380,
            578,542,1064,730,1163,1105,1221,1190,75,282,
            1673,618,20,17,21,18,443,43,45,524,
            486,283,1307,1701,281,20,17,21,18,443,
            1260,45,524,486,1794,578,542,1064,730,1163,
            1105,1221,1190,75,736,235,240,618,20,17,
            21,18,443,43,45,1280,292,618,20,17,
            21,18,443,1260,45,524,486,22,578,542,
            1064,730,1163,1105,1221,1190,75,92,804,20,
            17,21,18,443,1260,45,524,486,1806,578,
            542,1064,730,1163,1105,1221,1190,75,1593,461,
            20,17,21,18,443,43,45,524,486,982,
            578,542,1064,730,1163,1105,1221,1190,94,243,
            188,335,618,20,17,21,18,443,43,40,
            53,441,256,214,327,328,235,314,20,17,
            21,18,443,1260,45,524,486,1614,578,542,
            1064,730,1163,1105,1221,1190,75,1674,242,241,
            618,20,17,21,18,443,1260,45,524,486,
            838,578,542,1064,730,1163,1105,1221,1190,75,
            93,618,20,17,21,18,443,1260,45,524,
            486,19,578,542,1064,730,1163,1105,1221,1190,
            75,86,618,20,17,21,18,443,1260,45,
            524,486,838,578,542,1064,730,1163,1105,1221,
            1190,75,85,618,20,17,21,18,443,1260,
            45,524,486,535,578,542,1064,730,1163,1105,
            1221,1190,75,84,618,20,17,21,18,443,
            1260,45,524,486,838,578,542,1064,730,1163,
            1105,1221,1190,75,83,618,20,17,21,18,
            443,1260,45,524,486,536,578,542,1064,730,
            1163,1105,1221,1190,75,82,618,20,17,21,
            18,443,1260,45,524,486,838,578,542,1064,
            730,1163,1105,1221,1190,75,81,618,20,17,
            21,18,443,1260,45,524,486,547,578,542,
            1064,730,1163,1105,1221,1190,75,80,618,20,
            17,21,18,443,1260,45,524,486,838,578,
            542,1064,730,1163,1105,1221,1190,75,79,618,
            20,17,21,18,443,1260,45,524,486,1257,
            578,542,1064,730,1163,1105,1221,1190,75,78,
            618,20,17,21,18,443,1260,45,524,486,
            838,578,542,1064,730,1163,1105,1221,1190,75,
            77,618,20,17,21,18,443,1260,45,524,
            486,1322,578,542,1064,730,1163,1105,1221,1190,
            75,76,618,20,17,21,18,443,1260,45,
            524,486,838,578,542,1064,730,1163,1105,1221,
            1190,75,74,618,20,17,21,18,443,1260,
            45,524,486,23,578,542,1064,730,1163,1105,
            1221,1190,75,1833,618,20,17,21,18,443,
            1260,45,524,486,171,578,542,1064,730,1163,
            1105,1221,1190,75,1835,618,20,17,21,18,
            443,43,45,524,486,736,578,542,1064,730,
            1163,1105,1221,1190,94,618,20,17,21,18,
            443,43,45,524,486,333,578,542,1064,730,
            1163,1105,1221,1190,94,1727,680,20,17,21,
            18,443,323,1854,220,1617,222,1746,224,225,
            230,243,187,618,20,17,21,18,443,43,
            45,524,486,213,578,542,1064,730,1163,1105,
            1221,1190,94,618,20,17,21,18,443,43,
            45,524,486,613,578,542,1064,730,1163,1105,
            1221,1190,94,618,20,17,21,18,443,43,
            39,1864,618,20,17,21,18,443,43,38,
            176,618,20,17,21,18,443,43,45,524,
            486,203,578,542,1064,730,1163,1105,1221,1190,
            94,618,20,17,21,18,443,43,45,524,
            486,238,578,542,1064,730,1163,1105,1686,225,
            180,618,20,17,21,18,443,43,37,204,
            618,20,17,21,18,443,43,45,524,486,
            380,1375,136,214,327,328,654,854,385,1019,
            885,243,31,835,139,135,137,161,81,1741,
            618,20,17,21,18,443,43,45,524,486,
            115,578,542,1064,1647,141,167,277,275,28,
            1002,1701,145,148,151,154,979,439,219,1617,
            222,1746,224,225,230,325,1677,341,268,1258,
            537,273,264,256,214,327,328,278,1814,1417,
            265,838,886,188,1752,275,618,20,17,21,
            18,443,43,36,25,219,1617,222,1746,224,
            225,230,274,232,1323,268,1258,537,273,1845,
            1030,243,31,1747,28,262,1701,1321,618,20,
            17,21,18,443,43,45,524,486,6,578,
            542,1064,730,1635,719,400,243,1784,451,275,
            1727,480,219,1617,222,1746,224,225,230,220,
            1617,222,1746,224,225,230,1875,864,838,270,
            1258,537,273,618,20,17,21,18,443,43,
            45,524,486,511,578,542,1566,243,189,280,
            136,214,327,328,24,583,199,201,243,297,
            32,80,146,135,137,161,1837,618,20,17,
            21,18,443,43,45,524,486,211,578,1616,
            618,20,17,21,18,443,43,45,524,486,
            1799,578,1634,618,20,17,21,18,443,43,
            45,524,486,378,1381,618,20,17,21,18,
            443,43,45,524,486,632,1413,618,20,17,
            21,18,443,43,35,1343,136,214,327,328,
            430,20,17,21,18,443,43,36,143,135,
            137,161,618,20,17,21,18,443,43,45,
            524,1431,247,358,881,243,299,295,249,142,
            167,618,20,17,21,18,443,43,45,524,
            1528,674,883,838,883,6,848,136,214,327,
            328,1747,1836,909,1783,1788,1670,196,661,149,
            135,137,161,279,281,232,193,278,711,20,
            17,21,18,443,321,275,136,214,327,328,
            219,1617,222,1746,224,225,230,926,152,135,
            137,161,1131,235,1845,268,1258,537,273,430,
            20,17,21,18,443,43,36,1321,880,6,
            136,214,327,328,235,244,70,599,523,1678,
            1842,334,155,135,137,161,430,20,17,21,
            18,443,43,36,120,706,333,275,618,20,
            17,21,18,443,43,48,229,200,248,618,
            20,17,21,18,443,43,47,268,1258,537,
            273,618,20,17,21,18,443,43,46,267,
            924,601,113,974,235,6,518,924,441,1784,
            508,508,508,1848,20,657,487,508,742,20,
            17,21,18,443,41,550,243,1259,1259,198,
            1702,912,175,88,1259,1485,645,1702,773,20,
            17,21,18,443,34,773,20,17,21,18,
            443,33,285,6,1774,260,261,391,1398,6,
            1740,1350,260,370,6,1398,518,1740,340,657,
            486,32,194,6,370,6,386,32,657,210,
            198,88,930,1839,770,370,1608,88,6,957,
            1684,198,88,1558,1850,770,90,1608,370,6,
            419,1702,198,88,925,228,770,1702,1608,370,
            6,812,181,247,716,198,88,661,57,770,
            370,1608,854,508,382,1350,198,88,508,978,
            770,1085,1608,275,1727,896,382,198,88,1859,
            1259,770,6,1608,518,198,938,255,214,327,
            328,1485,1834,270,1258,537,273,980,1022,255,
            214,327,328,235,169,235,539,1006,260,441,
            1784,1847,518,1740,508,838,508,838,382,1852,
            723,518,518,526,235,245,192,246,193,382,
            484,198,747,1259,235,526,226,1485,231,1736,
            1672,255,214,327,328,449,296,235,1856,373,
            1940,737,255,214,327,328,298,1940,205,1940,
            1940,260,1940,1033,1543,1940,1740,182,206,1940,
            1940,1940,1940,1940,193,1940,1940,709,1940,195,
            210,1940,1940,1940,1940,1851,1672,1940,1290,1940,
            1940,1940,1940,1940,1787,1850,1940,0,330,699,
            0,20,180,0,1,2167,0,1,2178,0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    @Override
	public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    @Override
	public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,0,6,7,8,9,
            10,11,12,13,14,15,16,17,18,0,
            20,21,22,23,24,25,26,27,28,29,
            30,0,32,33,34,35,36,37,0,0,
            40,41,42,43,44,45,46,47,48,49,
            50,51,0,53,54,55,0,1,0,3,
            8,5,4,0,0,0,2,11,12,0,
            14,6,7,9,10,0,1,38,3,0,
            0,25,26,27,4,6,7,68,32,33,
            34,35,36,37,19,31,40,41,42,43,
            44,45,46,47,48,49,50,51,52,53,
            54,55,0,1,0,3,60,5,4,0,
            62,63,0,11,12,61,14,64,65,66,
            67,0,0,64,65,66,67,25,26,27,
            76,0,62,63,32,33,34,35,36,37,
            0,19,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,54,55,0,1,
            0,3,60,5,0,0,62,63,4,11,
            12,31,14,64,65,66,67,0,1,0,
            3,0,0,25,26,27,5,56,57,0,
            32,33,34,35,36,37,19,8,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,53,54,55,0,1,0,3,60,38,
            39,0,1,2,0,11,12,0,14,5,
            70,71,0,1,0,3,0,1,0,25,
            26,27,77,78,6,7,32,33,34,35,
            36,37,70,71,40,41,42,43,44,45,
            46,47,48,49,50,51,0,53,54,55,
            0,1,2,3,4,5,6,7,8,9,
            10,0,58,13,0,15,16,17,18,68,
            20,21,22,23,24,59,0,31,28,29,
            30,74,32,0,1,2,3,4,5,6,
            7,8,9,10,0,1,13,3,15,16,
            17,18,0,20,21,22,23,24,58,0,
            0,28,29,30,5,32,0,1,2,3,
            4,5,6,7,8,9,10,0,1,13,
            3,15,16,17,18,19,20,21,22,23,
            24,58,0,1,28,29,30,0,39,0,
            1,0,3,89,0,0,2,2,11,12,
            0,14,11,12,4,14,56,57,52,0,
            0,0,25,26,27,73,25,26,27,32,
            33,34,35,36,37,31,31,40,41,42,
            43,44,45,46,47,48,49,50,51,0,
            1,2,3,4,5,6,7,8,9,10,
            0,1,13,3,15,16,17,18,0,20,
            21,22,23,24,0,56,57,28,29,30,
            0,1,2,3,4,5,6,7,8,9,
            10,0,1,13,3,15,16,17,18,0,
            20,21,22,23,24,0,0,58,28,29,
            30,0,1,2,3,4,0,6,7,8,
            9,10,0,0,13,0,15,16,17,18,
            0,20,21,22,23,24,68,0,58,28,
            29,30,5,38,0,1,2,3,4,0,
            6,7,8,9,10,56,57,13,0,15,
            16,17,18,19,20,21,22,23,24,0,
            0,60,28,29,30,0,1,2,3,4,
            74,6,7,8,9,10,56,57,13,52,
            15,16,17,18,19,20,21,22,23,24,
            0,31,0,28,29,30,0,1,2,3,
            4,0,6,7,8,9,10,59,0,13,
            0,15,16,17,18,19,20,21,22,23,
            24,61,0,31,28,29,30,0,1,2,
            3,4,73,6,7,8,9,10,0,31,
            13,0,15,16,17,18,5,20,21,22,
            23,24,0,61,0,28,29,30,0,1,
            2,3,4,0,6,7,8,9,10,59,
            0,13,0,15,16,17,18,0,20,21,
            22,23,24,0,1,2,28,29,30,0,
            1,2,3,4,72,6,7,8,9,10,
            0,38,13,0,15,16,17,18,38,20,
            21,22,23,24,0,0,75,28,29,30,
            0,1,2,3,4,0,6,7,8,9,
            10,0,0,13,0,15,16,17,18,0,
            20,21,22,23,24,0,1,2,28,29,
            30,0,1,2,3,4,0,6,7,8,
            9,10,0,0,13,0,15,16,17,18,
            38,20,21,22,23,24,0,0,0,28,
            29,30,0,1,2,3,4,72,6,7,
            8,9,10,0,69,13,19,15,16,17,
            18,0,20,21,22,23,24,0,0,0,
            28,29,30,0,1,2,3,4,0,6,
            7,8,9,10,0,69,13,19,15,16,
            17,18,0,20,21,22,23,24,0,0,
            0,28,29,30,0,0,2,0,4,5,
            11,12,5,14,0,11,12,0,14,2,
            0,0,5,0,25,26,27,0,0,25,
            26,27,5,0,0,31,32,33,34,35,
            36,37,19,39,11,12,39,14,31,0,
            0,2,0,4,0,0,39,5,25,26,
            27,11,12,0,14,32,33,34,35,36,
            37,0,0,0,19,25,26,27,0,52,
            31,0,32,33,34,35,36,37,0,11,
            12,39,14,0,0,0,2,4,4,0,
            19,0,0,25,26,27,11,12,0,14,
            32,33,34,35,36,37,0,0,19,0,
            25,26,27,69,0,31,0,32,33,34,
            35,36,37,79,80,81,82,83,84,85,
            86,87,88,0,0,19,0,0,0,1,
            2,0,59,5,11,12,0,14,11,12,
            0,14,11,12,0,14,0,0,25,26,
            27,0,25,26,27,0,25,26,27,31,
            5,0,11,12,0,14,19,39,0,1,
            2,0,4,0,0,0,25,26,27,0,
            1,2,0,4,0,0,0,0,0,0,
            19,0,19,38,0,0,0,0,0,31,
            0,0,0,0,0,0,0,0,0,0,
            31,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            75,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    @Override
	public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            1940,1951,1723,1952,1326,1,1231,1182,1487,1715,
            1708,2155,2156,1688,2157,1953,1954,1955,1956,1940,
            1173,722,2258,2259,2260,2271,437,2272,1568,1116,
            557,254,2104,2105,2103,2158,2106,2102,183,89,
            2109,2114,2113,2111,2112,2110,2115,2116,2108,2117,
            2118,2119,65,1250,1523,1305,1940,1,49,1,
            1403,192,1661,60,32,52,1738,1,1,62,
            1,647,473,1966,1967,1940,1951,760,1952,54,
            51,1,1,1,1661,647,473,1012,1,1,
            1,1,1,1,1545,1675,1,1,1,1,
            1,1,1,1,1,1,1,1,192,1,
            1,1,1940,1,50,1,2137,191,1661,61,
            1649,1638,184,1,1,1351,1,1475,1463,1240,
            611,287,326,1475,1463,1240,611,1,1,1,
            1261,55,1649,1638,1,1,1,1,1,1,
            272,3167,1,1,1,1,1,1,1,1,
            1,1,1,1,191,1,1,1,1940,1,
            63,1,2137,192,1940,73,1649,1638,580,1,
            1,624,1,1475,1463,1240,611,1940,1951,1940,
            1952,1940,64,1,1,1,1946,1512,1531,66,
            1,1,1,1,1,1,1609,1403,1,1,
            1,1,1,1,1,1,1,1,1,1,
            192,1,1,1,1940,1951,1940,1952,2137,1879,
            1945,1,2167,1541,1940,2155,2156,71,2157,1944,
            1450,1437,1940,1951,1940,1952,1,1937,53,2271,
            437,2272,1211,1729,647,473,2104,2105,2103,2158,
            2106,2102,1450,1437,2109,2114,2113,2111,2112,2110,
            2115,2116,2108,2117,2118,2119,330,1250,1523,1305,
            1,1951,1723,1952,1500,1944,1231,1182,1487,1715,
            1708,1940,1943,1688,1940,1953,1954,1955,1956,1153,
            1173,722,2258,2259,2260,2199,1940,1928,1568,1116,
            557,409,678,1940,1951,1723,1952,1626,1944,1231,
            1182,1487,1715,1708,186,3307,1688,3307,1953,1954,
            1955,1956,69,1173,722,2258,2259,2260,1943,1,
            59,1568,1116,557,91,1054,1,1951,1723,1952,
            1326,29,1231,1182,1487,1715,1708,185,3331,1688,
            3331,1953,1954,1955,1956,3167,1173,722,2258,2259,
            2260,1943,1940,2179,1568,1116,557,130,91,207,
            3333,1940,3333,1927,271,223,1542,1544,2155,2156,
            1940,2157,2155,2156,1430,2157,1512,1531,29,58,
            1940,1940,2271,437,2272,1358,2271,437,2272,2104,
            2105,2103,2158,2106,2102,624,624,2109,2114,2113,
            2111,2112,2110,2115,2116,2108,2117,2118,2119,1940,
            1951,1723,1952,1326,1944,1231,1182,1487,1715,1708,
            209,1951,1688,1952,1953,1954,1955,1956,202,1173,
            722,2258,2259,2260,1940,1512,1531,1568,1116,557,
            1940,1951,1723,1952,1599,1944,1231,1182,1487,1715,
            1708,208,1376,1688,1376,1953,1954,1955,1956,57,
            1173,722,2258,2259,2260,257,72,1943,1568,1116,
            557,1940,1,1,1,1,1940,1,1,1,
            1,1,1940,1940,1,1940,1,1,1,1,
            56,1,1,1,1,1,1191,1940,1943,1,
            1,1,1948,1671,1940,1951,1723,1952,1326,1940,
            1231,1182,1487,1715,1708,1512,1531,1688,1,1953,
            1954,1955,1956,3167,1173,722,2258,2259,2260,70,
            1940,2257,1568,1116,557,1,1951,1723,1952,1326,
            409,1231,1182,1487,1715,1708,1512,1531,1688,1947,
            1953,1954,1955,1956,3167,1173,722,2258,2259,2260,
            1940,1075,293,1568,1116,557,1940,1951,1723,1952,
            1326,1940,1231,1182,1487,1715,1708,2199,221,1688,
            1,1953,1954,1955,1956,3167,1173,722,2258,2259,
            2260,1428,67,1133,1568,1116,557,1940,1951,1723,
            1952,1326,1358,1231,1182,1487,1715,1708,1940,624,
            1688,1,1953,1954,1955,1956,1950,1173,722,2258,
            2259,2260,1940,1525,1940,1568,1116,557,1940,1951,
            1734,1952,1326,30,1231,1182,1487,1715,1708,2198,
            30,1688,1940,1953,1954,1955,1956,1940,1173,722,
            2258,2259,2260,1,2167,1541,1568,1116,557,1940,
            1951,1745,1952,1326,1270,1231,1182,1487,1715,1708,
            1940,487,1688,1940,1953,1954,1955,1956,1969,1173,
            722,2258,2259,2260,1940,68,1949,1568,1116,557,
            1940,1951,1758,1952,1326,212,1231,1182,1487,1715,
            1708,1940,208,1688,1940,1953,1954,1955,1956,1940,
            1173,722,2258,2259,2260,254,2167,1541,1568,1116,
            557,1940,1951,1769,1952,1326,1940,1231,1182,1487,
            1715,1708,1940,1940,1688,1940,1953,1954,1955,1956,
            2781,1173,722,2258,2259,2260,1940,324,1940,1568,
            1116,557,1940,1951,1780,1952,1326,1270,1231,1182,
            1487,1715,1708,1940,1095,1688,3167,1953,1954,1955,
            1956,1940,1173,722,2258,2259,2260,1940,322,1940,
            1568,1116,557,1,1951,1723,1952,1326,1940,1231,
            1182,1487,1715,1708,1940,589,1688,3167,1953,1954,
            1955,1956,1940,1173,722,2258,2259,2260,1940,249,
            1940,1568,1116,557,20,1940,1931,1940,1931,1931,
            2155,2156,1946,2157,1940,180,180,1,180,1546,
            1940,1940,1946,42,2271,437,2272,286,1940,180,
            180,180,432,131,1940,1931,180,180,180,180,
            180,180,3167,1931,2155,2156,1945,2157,624,266,
            132,1546,1,1,43,1940,1945,1946,2271,437,
            2272,2155,2156,1940,2157,2104,2105,2103,2158,2106,
            2102,1940,1940,1940,3167,2271,437,2272,133,432,
            624,1940,2104,2105,2103,2158,2106,2102,1940,2155,
            2156,1945,2157,1,269,134,1546,254,254,1940,
            1368,1940,1940,2271,437,2272,2155,2156,1940,2157,
            2104,2105,2103,2158,2106,2102,1940,1940,1743,1940,
            2271,437,2272,991,1940,624,1940,2104,2105,2103,
            2158,2106,2102,970,949,928,907,886,844,865,
            823,802,781,250,1940,1812,1940,251,1,1934,
            1296,252,2199,1946,1,1,1940,1,1,1,
            1940,1,2155,2156,1940,2157,1940,190,1,1,
            1,253,1,1,1,1940,2271,437,2272,624,
            1950,1940,2155,2156,1940,2157,186,1945,263,2167,
            1296,190,1,190,1940,1940,2271,437,2272,269,
            2167,1296,1940,254,1940,1940,1940,1940,1940,1940,
            185,1940,207,472,1940,1940,1940,1940,1940,624,
            1940,1940,1940,1940,1940,1940,1940,1940,1940,1940,
            624,1940,1940,1940,1940,1940,1940,1940,1940,1940,
            1940,1940,1940,1940,1940,1940,1940,1940,1940,1940,
            1949
        };
    };
    public final static char termAction[] = TermAction.termAction;
    @Override
	public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            133,1,206,98,206,206,206,206,206,206,
            206,206,206,206,206,206,60,10,80,77,
            84,82,90,88,92,91,94,93,66,206,
            10,10,10,10,10,418,418,459,206,304,
            304,339,10,206,206,206,206,206,206,206,
            206,206,206,206,206,206,206,206,206,206,
            206,206,206,206,206,206,206,206,206,206,
            206,206,206,304,304,304,304,304,304,102,
            109,343,197,385,302,301,311,3,323,129,
            323,129,129,323,129,323,30,255,77,77,
            82,82,82,82,80,80,88,84,84,91,
            90,490,93,92,157,157,157,157,131,382,
            131,339,343,200,102,53,230,304,427,388,
            230,129,418,418,129,418,206,382,107,343,
            331,53,102,229,197,304,337,30,303,390,
            102,230,131,352,131,421,107,331,331,206,
            206,102,230,385,485,484,343,390,304,131,
            352,421,421,423,308,331,53,102,102,304,
            427,388,337,352,382,345,352,421,423,492,
            423,382,105,495,418,206,307,53,331,390,
            352,347,423,382,206,418,60,109,102,418,
            206,331,304,303,382,193,206,192,225,343,
            382,102,419,347,206,225
        };
    };
    public final static char asb[] = Asb.asb;
    @Override
	public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            89,0,5,68,38,58,39,75,31,13,
            15,16,17,18,2,9,10,8,4,6,
            7,20,21,22,23,24,28,29,30,1,
            3,53,54,55,48,40,45,43,44,42,
            41,46,47,49,50,51,37,34,32,33,
            36,35,11,12,14,26,25,27,0,31,
            2,61,76,9,10,69,79,80,81,82,
            83,85,84,86,87,88,4,62,63,6,
            7,57,56,64,65,66,67,70,71,8,
            72,73,74,52,75,77,78,68,39,89,
            38,58,5,0,5,52,31,61,9,10,
            8,4,6,7,20,21,13,28,29,30,
            2,15,16,17,18,22,23,24,1,3,
            19,0,13,15,16,17,18,1,3,2,
            9,10,8,4,6,7,20,21,22,23,
            24,28,29,30,60,0,8,4,6,7,
            62,63,56,57,64,65,66,67,70,71,
            72,73,74,77,78,69,79,80,81,82,
            83,84,85,86,87,88,58,39,52,89,
            19,68,75,5,38,0,58,5,32,11,
            12,14,25,26,27,15,16,17,18,22,
            23,24,3,9,10,8,6,7,20,21,
            13,28,29,30,4,2,1,0,32,58,
            5,9,10,8,4,6,7,20,21,13,
            28,29,30,2,1,3,15,16,17,18,
            22,23,24,0,12,32,37,14,36,35,
            34,11,33,25,26,27,61,76,9,10,
            8,6,7,62,63,56,57,64,65,66,
            67,70,71,72,73,74,77,78,69,79,
            80,81,82,83,84,85,86,87,88,4,
            2,31,38,39,5,0,69,31,61,0,
            48,40,45,43,44,42,41,46,47,49,
            50,51,68,75,37,34,32,33,36,35,
            11,12,14,25,26,27,38,1,5,39,
            2,31,4,0,75,5,4,1,2,68,
            0,33,40,11,41,53,34,42,35,43,
            44,36,12,45,46,32,54,37,55,47,
            48,14,49,50,51,1,3,25,26,27,
            60,5,52,0,4,2,31,39,5,33,
            40,11,41,53,34,42,35,43,44,36,
            12,45,46,32,54,37,55,47,48,14,
            49,50,51,25,26,27,59,3,1,0,
            1,3,5,52,38,0,4,33,40,11,
            41,53,34,42,35,43,44,36,12,45,
            46,32,54,37,55,47,48,14,49,50,
            51,1,3,25,26,27,59,0,5,39,
            13,15,16,17,18,1,3,2,9,10,
            8,4,6,7,20,21,22,23,24,28,
            29,30,0,2,5,38,39,75,31,68,
            0,5,38,52,69,0
        };
    };
    public final static byte asr[] = Asr.asr;
    @Override
	public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static byte nasb[] = {0,
            36,35,26,35,26,26,26,26,26,26,
            26,26,26,26,26,26,35,105,35,35,
            35,35,35,35,35,35,35,35,35,26,
            105,105,105,105,105,66,66,109,106,87,
            87,90,1,26,26,26,26,26,26,26,
            26,26,26,26,26,26,26,26,26,106,
            26,26,26,26,26,26,26,26,26,26,
            26,26,26,87,87,87,87,87,87,48,
            9,39,46,89,44,44,58,17,59,19,
            59,62,62,59,61,59,53,35,35,35,
            35,35,35,35,35,35,35,35,35,35,
            35,35,35,35,10,10,10,10,10,73,
            35,112,35,50,48,124,47,87,94,86,
            47,7,7,7,7,7,26,103,73,35,
            79,124,48,47,42,87,69,28,35,96,
            48,47,15,73,35,73,24,79,73,26,
            26,48,47,68,44,44,39,96,87,35,
            120,73,7,64,13,73,124,48,48,87,
            94,86,75,73,103,83,99,7,64,35,
            35,103,23,35,7,26,81,124,42,116,
            120,71,64,103,26,7,21,25,48,7,
            26,42,87,87,103,84,26,35,71,39,
            103,48,35,71,26,77
        };
    };
    public final static byte nasb[] = Nasb.nasb;
    @Override
	public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            80,78,77,68,76,75,1,0,5,34,
            32,0,100,0,92,0,103,0,91,0,
            98,0,88,10,34,5,0,80,79,78,
            77,68,76,75,0,10,89,0,30,54,
            0,23,0,29,0,10,5,22,0,5,
            10,0,68,63,64,65,66,56,35,0,
            94,69,0,62,0,73,0,21,51,50,
            42,40,10,0,51,50,42,40,30,0,
            102,0,10,72,0,10,21,0,21,50,
            51,10,0,30,54,10,27,0,10,33,
            70,0,46,0,33,10,31,0,10,90,
            0,51,50,30,0,95,10,27,0,82,
            10,33,0,59,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    @Override
	public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            85,2,86,9,87,10,11,8,6,7,
            48,64,68,76,81,82,83,84,3,12,
            13,93,94,95,96,97,98,100,101,102,
            1,69,44,55,60,63,72,42,90,47,
            52,56,61,62,66,67,74,75,78,79,
            80,91,54,70,73,16,17,89,30,107,
            4,14,15,18,19,20,21,29,31,22,
            23,24,25,26,92,5,27,28,32,33,
            34,35,36,37,38,39,40,41,108,45,
            46,49,50,51,53,57,58,59,65,71,
            77,88,99,103,104,105,106
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    @Override
	public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            114,0,0,0,116,120,121,122,123,0,
            124,125,126,127,128,129,130,131,0,132,
            111,110,142,0,0,0,135,0,163,0,
            115,119,154,0,141,0,0,0,159,161,
            0,162,0,0,0,112,118,134,172,173,
            174,0,150,160,169,144,0,164,167,168,
            171,0,145,146,147,148,149,151,0,153,
            158,113,117,133,136,137,138,139,140,143,
            0,152,156,0,0,157,166,176,109,0,
            0,0,155,0,165,170,175,0,177,178,
            0,179,180,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    @Override
	public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            120,151,130,59,69,159,26,186,35,87,
            105,75,6,12,16,40,83,52,141,208,
            215,219,52,52,195,52,1,1,1,44,
            47,92,115,47,223,20,145,202,202,177,
            137,165,165,165,165,165,95,95,95
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    @Override
	public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            128,128,128,4,4,128,32,192,10,4,
            10,80,10,10,10,10,4,4,139,10,
            10,4,56,80,199,65,4,4,4,10,
            50,4,10,118,10,23,148,205,212,180,
            139,167,169,171,173,175,102,97,110
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    @Override
	public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            65,63,65,29,29,63,32,111,52,29,
            45,29,6,6,6,52,29,29,70,6,
            5,5,29,29,19,29,103,102,101,50,
            61,29,42,53,3,88,70,7,5,112,
            70,79,78,77,76,75,45,43,45
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    @Override
	public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            52,52,52,58,58,52,52,95,39,58,
            39,15,39,39,39,39,58,58,75,39,
            39,58,4,15,68,32,58,58,58,39,
            2,58,39,1,39,69,1,39,39,101,
            75,1,53,54,54,48,2,2,2
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    @Override
	public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static byte scopeStateSet[] = {
            29,29,29,33,33,29,19,-1,37,33,
            9,33,44,44,44,37,33,33,5,44,
            44,44,33,33,78,33,17,1,3,37,
            39,33,9,11,44,105,5,50,44,-1,
            5,30,30,30,30,30,9,9,9
        };
    };
    public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
    @Override
	public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            155,31,0,110,0,154,2,30,0,111,
            0,154,2,29,0,154,2,28,0,206,
            117,0,31,149,0,169,204,117,19,141,
            0,112,0,0,165,117,2,157,0,165,
            117,2,0,168,2,0,161,117,0,172,
            0,194,117,31,0,9,110,0,127,32,
            194,117,31,0,69,132,110,0,127,194,
            117,32,31,0,194,117,32,31,0,132,
            110,0,127,32,31,0,127,194,117,31,
            0,127,31,0,149,0,2,0,165,111,
            0,2,111,0,165,117,2,149,0,2,
            0,164,111,0,160,2,0,159,0,169,
            192,117,19,108,201,53,0,112,0,169,
            192,117,19,201,53,0,140,0,113,0,
            200,117,140,0,117,140,0,155,113,0,
            188,117,19,199,108,198,175,0,188,117,
            19,198,175,0,187,0,148,0,147,0,
            146,0,145,0,144,0,214,94,0,77,
            2,115,111,113,0,214,128,138,2,98,
            0,53,0,0,138,78,125,0,29,132,
            0,154,2,0,111,121,0,154,2,13,
            0,111,119,0,197,2,112,0,138,31,
            112,0,138,2,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    @Override
	public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            1425,0,428,0,1834,1672,1788,0,1085,1350,
            472,1541,1343,1296,1259,0,437,0,589,487,
            451,1322,1257,547,536,535,397,0,1229,508,
            370,0,1746,1617,1258,537,1350,1774,1296,1259,
            1546,1608,0,1715,1708,1688,1568,1116,557,1626,
            1599,1500,397,409,1211,1270,1358,1450,1437,1403,
            1531,1512,1475,1463,1240,611,1661,1649,1638,647,
            473,1487,1326,1231,1182,1173,722,1191,1153,1133,
            589,1095,1075,1054,1033,737,1012,699,678,624,
            991,970,949,928,907,886,865,844,823,802,
            781,370,760,657,487,451,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    @Override
	public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,196,117,181,30,29,28,13,21,20,
            7,6,4,8,10,9,112,2,116,115,
            119,118,121,120,123,122,125,124,113,38,
            2,2,2,2,2,76,61,2,31,154,
            138,140,117,7,6,63,62,4,67,66,
            65,64,56,57,8,71,70,73,72,78,
            77,74,88,87,86,84,85,83,82,81,
            80,79,69,154,154,154,154,154,197,138,
            128,117,31,2,158,157,182,26,183,175,
            184,55,54,185,53,186,187,108,115,115,
            118,118,118,118,116,116,120,119,119,122,
            121,138,124,123,128,128,128,128,128,19,
            141,161,137,32,127,117,4,168,117,2,
            31,198,176,176,201,176,68,117,19,137,
            4,117,127,194,166,165,134,117,167,117,
            155,4,108,19,108,19,117,4,137,194,
            32,127,4,2,147,149,117,38,165,199,
            117,19,117,204,117,137,117,127,127,160,
            117,2,161,19,188,140,189,117,192,108,
            193,169,38,206,61,31,207,117,166,117,
            117,117,192,169,69,38,153,69,155,61,
            31,166,165,202,188,200,68,160,2,117,
            169,155,38,38,68,161
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    @Override
	public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            "{",
            ".",
            "->",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            "$empty",
            "auto",
            "break",
            "case",
            "char",
            "const",
            "continue",
            "default",
            "do",
            "double",
            "else",
            "enum",
            "extern",
            "float",
            "for",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "register",
            "restrict",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "struct",
            "switch",
            "typedef",
            "union",
            "unsigned",
            "void",
            "volatile",
            "while",
            "_Bool",
            "_Complex",
            "_Imaginary",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "MYTHREAD",
            "THREADS",
            "UPC_MAX_BLOCKSIZE",
            "relaxed",
            "shared",
            "strict",
            "upc_barrier",
            "upc_localsizeof",
            "upc_blocksizeof",
            "upc_elemsizeof",
            "upc_notify",
            "upc_fence",
            "upc_wait",
            "upc_forall",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "expression_parser_start",
            "]",
            ")",
            "}",
            ";",
            "identifier_token",
            "expression",
            "postfix_expression",
            "member_name",
            "type_id",
            "initializer_list",
            "unary_expression",
            "cast_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "expression_list_actual",
            "constant_expression",
            "declaration_specifiers",
            "simple_declaration_specifiers",
            "struct_or_union_declaration_sp" +
            "ecifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "typdef_name_declaration_specif" +
            "iers",
            "no_type_declaration_specifier",
            "type_qualifier",
            "no_type_declaration_specifiers",
            "simple_type_specifier",
            "struct_or_union_specifier",
            "elaborated_specifier",
            "enum_specifier",
            "type_name_specifier",
            "initializer",
            "declarator",
            "struct_or_union",
            "struct_declaration_list",
            "struct_declaration",
            "specifier_qualifier_list",
            "struct_declarator_list",
            "complete_struct_declarator",
            "enumerator_list",
            "enumerator",
            "direct_declarator",
            "pointer_seq",
            "array_direct_declarator",
            "basic_direct_declarator",
            "array_modifier",
            "parameter_type_list",
            "identifier_list",
            "array_modifier_type_qualifiers",
            "type_qualifier_list",
            "parameter_list",
            "parameter_declaration",
            "complete_parameter_declarator",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "initializer_seq",
            "designated_initializer",
            "designation",
            "designator_list",
            "designator",
            "layout_qualifier"
        };
    };
    public final static String name[] = Name.name;
    @Override
	public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 60,
           SCOPE_UBOUND      = 48,
           SCOPE_SIZE        = 49,
           MAX_NAME_LENGTH   = 38;

    @Override
	public final int getErrorSymbol() { return ERROR_SYMBOL; }
    @Override
	public final int getScopeUbound() { return SCOPE_UBOUND; }
    @Override
	public final int getScopeSize() { return SCOPE_SIZE; }
    @Override
	public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 226,
           NT_OFFSET         = 107,
           LA_STATE_OFFSET   = 2309,
           MAX_LA            = 2,
           NUM_RULES         = 369,
           NUM_NONTERMINALS  = 131,
           NUM_SYMBOLS       = 238,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 510,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 89,
           EOLT_SYMBOL       = 89,
           ACCEPT_ACTION     = 1927,
           ERROR_ACTION      = 1940;

    public final static boolean BACKTRACK = true;

    @Override
	public final int getNumStates() { return NUM_STATES; }
    @Override
	public final int getNtOffset() { return NT_OFFSET; }
    @Override
	public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    @Override
	public final int getMaxLa() { return MAX_LA; }
    @Override
	public final int getNumRules() { return NUM_RULES; }
    @Override
	public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    @Override
	public final int getNumSymbols() { return NUM_SYMBOLS; }
    @Override
	public final int getSegmentSize() { return SEGMENT_SIZE; }
    @Override
	public final int getStartState() { return START_STATE; }
    @Override
	public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    @Override
	public final int getEoftSymbol() { return EOFT_SYMBOL; }
    @Override
	public final int getEoltSymbol() { return EOLT_SYMBOL; }
    @Override
	public final int getAcceptAction() { return ACCEPT_ACTION; }
    @Override
	public final int getErrorAction() { return ERROR_ACTION; }
    @Override
	public final boolean isValidForParser() { return isValidForParser; }
    @Override
	public final boolean getBacktrack() { return BACKTRACK; }

    @Override
	public final int originalState(int state) {
        return -baseCheck[state];
    }
    @Override
	public final int asi(int state) {
        return asb[originalState(state)];
    }
    @Override
	public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    @Override
	public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    @Override
	public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    @Override
	public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    @Override
	public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
